package com.example.myapplication01.chapter08;

// AndroidX库导入
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

// Android基础库导入
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

// 项目资源导入
import com.example.myapplication01.R;

// 主类定义（实现点击监听接口）
public class SendMmsActivity extends AppCompatActivity implements View.OnClickListener {

    // 控件声明
    private ImageView iv_appendix;       // 附件预览图片
    private ActivityResultLauncher<Intent> mResultLauncher; // 活动结果启动器
    private EditText et_phone;           // 电话号码输入框
    private EditText et_title;           // 标题输入框
    private EditText et_message;         // 消息内容输入框
    private Uri picUri;                  // 图片URI地址

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_mms);   // 设置布局文件

        // 控件初始化
        et_phone = findViewById(R.id.et_phone);
        et_title = findViewById(R.id.et_title);
        et_message = findViewById(R.id.et_message);
        iv_appendix = findViewById(R.id.iv_appendix);

        // 设置点击监听
        iv_appendix.setOnClickListener(this);
        findViewById(R.id.btn_send_mms).setOnClickListener(this);

        // 注册活动结果回调（用于处理相册选择结果）
        mResultLauncher = registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                new ActivityResultCallback<ActivityResult>() {
                    @Override
                    public void onActivityResult(ActivityResult result) {
                        // 结果处理：当相册选择成功时
                        if (result.getResultCode()  == RESULT_OK) {
                            Intent intent = result.getData();
                            // 获取选择的图片URI
                            picUri = intent.getData();
                            if (picUri != null) {
                                // 在ImageView中显示选择的图片
                                iv_appendix.setImageURI(picUri);
                                Log.d("ning", "picUri:" + picUri.toString());
                            }
                        }
                    }
                });
    }

    @Override
    public void onClick(View v) {
        // 附件图片点击事件
        if (v.getId()  == R.id.iv_appendix)  {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");   // 设置文件类型为图片
            mResultLauncher.launch(intent);   // 启动相册选择
        }
        // 发送按钮点击事件
        else if (v.getId()  == R.id.btn_send_mms)  {
            // 调用发送彩信方法
            sendMms(
                    et_phone.getText().toString(),
                    et_title.getText().toString(),
                    et_message.getText().toString()
            );
        }
    }

    // 彩信发送方法
    private void sendMms(String phone, String title, String message) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   // 设置新任务栈
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);  // 授予URI读取权限

        // 添加彩信参数
        intent.putExtra("address",  phone);      // 目标号码
        intent.putExtra("subject",  title);      // 消息标题
        intent.putExtra("sms_body",  message);   // 消息正文
        intent.putExtra(Intent.EXTRA_STREAM,  picUri); // 图片附件

        intent.setType("image/*");   // 设置MIME类型
        startActivity(intent);      // 启动分享选择器
        Toast.makeText(this,  "请在弹窗中选择短信或者信息应用", Toast.LENGTH_SHORT).show();
    }
}